/**
* Projet Chat System
* 
* @author Yann MBOUNGOU et Jean-Christophe VENDOME
* ELEVES INGENIEUR - 4e Année - Informatique et Réseaux
* INSA TOULOUSE, Dept. GEI - 2014 - 2015
*
* Composant permettant d'afficher du texte en couleur
* Equivalent d'un JTextArea avec la methode void append(Color couleur,String s) en plus !
* From : http://www.java2s.com/Code/Java/Swing-JFC/ExtensionofJTextPanethatallowstheusertoeasilyappendcoloredtexttothedocument.htm
*/

package GUI;
import java.awt.Color;
import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;


public class JColorTextPane extends JTextPane {
    
         /**
     * README :
     * Cette classe implémente les memes fonctions
     * que JTextArea. Elle nous a été utile juste pour
     * l'affichage des textes en couleur dans le GUI 
     */
    
  JColorTextPane() {super();}
  JColorTextPane(StyledDocument doc) {super(doc);}
  /////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////
  public void append(String s) {
    append(Color.black,s);
  }
  /////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////
  public void append(Color couleur,String s) {
    setEditable(true); // Mode edition pour pouvoir ajouter du texte !
    StyleContext sc=StyleContext.getDefaultStyleContext(); // Sytle actuel
    // Ajout d'un attribut fixant la couleur de premier plan (Foreground)
    AttributeSet attrSet=sc.addAttribute(SimpleAttributeSet.EMPTY,StyleConstants.Foreground,couleur);
    setCaretPosition(getDocument().getLength()); // place caret at the end (with no selection)
    setCharacterAttributes(attrSet,false); // do not replace the existing attributes first
    replaceSelection(s); // there is no selection, so inserts at caret
    setCaretPosition(getDocument().getLength()); // place caret at the end (with no selection)
    setEditable(false); // Desactivation du mode edition pour interdire la modification du texte !
    validate();//repaint();
  }
}
